package LogicaClasesNew;


import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Endpoint;


@WebService
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class WsIproducto {  
    
    private Endpoint endpoint = null;
    private IcontroladorProducto ICPROD;

    
    //Constructor que publica el WebService con sus metodos.
    public WsIproducto() {
        
    Fabrica fabrica = Fabrica.getInstance();
    this.ICPROD = fabrica.getControladorProducto();
    try{
    Properties preferences = new Properties();
    FileInputStream in = new FileInputStream(System.getProperty("user.home")+"/configWebServices.ini");
    preferences.load(in);
    String host = preferences.getProperty("Host");
    String port = preferences.getProperty("Port");
    endpoint = Endpoint.publish("http://"+host+":"+port+"/iproducto", this);
    }
    catch(Exception ex){
    //    endpoint = Endpoint.publish("http://localhost:8280/iproducto", this);
    }
		
//.....WebMethod.....
    }
    
    @WebMethod
    public void createProducto(int NumRef, String Nombre, String Descripcion, String Especificacion, float precio, Proveedor proveedor) {
    ICPROD.createProducto(NumRef, Nombre, Descripcion, Especificacion, precio, proveedor);
    }
    /*
    @WebMethod(exclude = true)
    public void createProducto2(int NumRef, String Nombre, String Descripcion, String Especificacion, float precio, Proveedor proveedor, byte[] Foto0, byte[] Foto1, byte[] Foto2){
        ICPROD.createProducto2(NumRef, Nombre, Descripcion, Especificacion, precio, proveedor, Foto0, Foto1, Foto2);
    }
    */
    @WebMethod
    public Producto findProducto(int NumRef){
        return ICPROD.findProducto(NumRef);
    }
    
    @WebMethod
    public Producto findProducto2(String nombreProd){
        return ICPROD.findProducto2(nombreProd);
    }
    
    @WebMethod
    public ArrayList<Categoria> getListadoCategoriasXprod(int numRef){
        return new ArrayList(ICPROD.getListadoCategoriasXproducto(numRef));
    }
    
    @WebMethod
    public void editProducto(int NumRef, String Nombre, String Descripcion, String Especificacion, float precio, Proveedor proveedor){
        ICPROD.editProducto(NumRef, Nombre, Descripcion, Especificacion, precio, proveedor);
    }
    
    @WebMethod
    public void asignarCate(int NumRef, String cat){
        ICPROD.asignarCate(NumRef, cat);
    }
    
       
    @WebMethod
    public ArrayList<Producto> findProductoEntities(){
        return new ArrayList(ICPROD.findProductoEntities()); 
    }
    
    
    @WebMethod(exclude = true)
	public Endpoint getEndpoint() {
            return endpoint;
    }
    
}        